#include <pthread.h>#include <stdio.h>#include <unistd.h>#include <semaphore.h>static char g_buf[1000];static int g_hasData = 0;//全局变量阻塞static sem_t g_sem;static void* my_thread_func(void * data){	while(1)	{		//等待信号量		while(g_hasData == 0){};		//接收到通知后打印		printf("recv: %s\n",g_buf);	}	return NULL;}int main(){	pthread_t tid;//线程的ID	int ret;			/* 1、创建“接收线程” */		// pthread_create（线程ID，属性,线程运行函数，函数参数）		// void *(*start_routine) (void *) ：返回值和参数都是void指针的 函数指针 	ret = pthread_create(&tid, NULL,my_thread_func, NULL);	if(ret){printf("pthread_create err!\n");}	/* 2、主线程读取标准输入，发给“接收线程” */	while(1)	{		fgets(g_buf, 999, stdin);		//通知接收线程		g_hasData = 1;	}	return 0;}